package com.dragon.modules.yuegou.model.message;

import com.dragon.modules.yuegou.entity.message.PushEntity;
import com.dragon.modules.yuegou.enums.Platform;
import com.dragon.modules.yuegou.enums.message.PushStatus;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * 消息推送模型类
 * 
 * @author pbuilder generated
 * @date 2019-04-18 11:24:16
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class Push extends PushEntity {

	/**
	 * 构造一个空消息推送模型对象
	 */
	public Push(){
		super();
	}
	
	/**
	 * 依据实体对象的信息构造一个消息推送模型对象
	 * 
	 * @param entity 实体对象
	 */
	public Push(PushEntity entity){
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个消息推送模型对象
	 * 
	 * @param other 其它对象
	 */
	public Push(Push other){
		super(other);
	}


	@Override
	public String getId() {
    	return id;
    }

    /**
	 * 设置
	 * 
	 * @param id 
	 * @return 当前对象
	 */
    public Push id(String id) {
    	this.id = id;
    	return this;
    }

	@Override
	public Platform getPlatform() {
    	return platform;
    }

    /**
	 * 设置[全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM
	 * 
	 * @param platform [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM
	 * @return 当前对象
	 */
    public Push platform(Platform platform) {
    	this.platform = platform;
    	return this;
    }

	@Override
	public String getTitle() {
    	return title;
    }

    /**
	 * 设置推送标题
	 * 
	 * @param title 推送标题
	 * @return 当前对象
	 */
    public Push title(String title) {
    	this.title = title;
    	return this;
    }

	@Override
	public String getTemplateId() {
    	return templateId;
    }

    /**
	 * 设置消息模板ID
	 * 
	 * @param templateId 消息模板ID
	 * @return 当前对象
	 */
    public Push templateId(String templateId) {
    	this.templateId = templateId;
    	return this;
    }

	@Override
	public String getArgValues() {
    	return argValues;
    }

    /**
	 * 设置参数值列表，使用|隔开，参数本身不允许使用|
	 * 
	 * @param argValues 参数值列表，使用|隔开，参数本身不允许使用|
	 * @return 当前对象
	 */
    public Push argValues(String argValues) {
    	this.argValues = argValues;
    	return this;
    }

	@Override
	public String getTitleArgValues() {
    	return titleArgValues;
    }

    /**
	 * 设置标题参数值列表，以|隔开
	 * 
	 * @param titleArgValues 标题参数值列表，以|隔开
	 * @return 当前对象
	 */
    public Push titleArgValues(String titleArgValues) {
    	this.titleArgValues = titleArgValues;
    	return this;
    }

	@Override
	public String getUrlArgValues() {
    	return urlArgValues;
    }

    /**
	 * 设置跳转地址参数值列表，以|隔开
	 * 
	 * @param urlArgValues 跳转地址参数值列表，以|隔开
	 * @return 当前对象
	 */
    public Push urlArgValues(String urlArgValues) {
    	this.urlArgValues = urlArgValues;
    	return this;
    }

	@Override
	public String getGroupId() {
    	return groupId;
    }

    /**
	 * 设置集团条件
	 * 
	 * @param groupId 集团条件
	 * @return 当前对象
	 */
    public Push groupId(String groupId) {
    	this.groupId = groupId;
    	return this;
    }

	@Override
	public String getBusdId() {
    	return busdId;
    }

    /**
	 * 设置商圈条件
	 * 
	 * @param busdId 商圈条件
	 * @return 当前对象
	 */
    public Push busdId(String busdId) {
    	this.busdId = busdId;
    	return this;
    }

	@Override
	public String getTags() {
    	return tags;
    }

    /**
	 * 设置标签条件，以|逗号隔开，首尾加上|，多个标签取并集，最多允许10个标签。
	 * 
	 * @param tags 标签条件，以|逗号隔开，首尾加上|，多个标签取并集，最多允许10个标签。
	 * @return 当前对象
	 */
    public Push tags(String tags) {
    	this.tags = tags;
    	return this;
    }

	@Override
	public String getTagsAnd() {
    	return tagsAnd;
    }

    /**
	 * 设置标签条件，以|逗号隔开，首尾加上|，多个标签取交集，最多允许10个标签。
	 * 
	 * @param tagsAnd 标签条件，以|逗号隔开，首尾加上|，多个标签取交集，最多允许10个标签。
	 * @return 当前对象
	 */
    public Push tagsAnd(String tagsAnd) {
    	this.tagsAnd = tagsAnd;
    	return this;
    }

	@Override
	public String getTagsNot() {
    	return tagsNot;
    }

    /**
	 * 设置标签条件，以|逗号隔开，首尾加上|，多个标签先取并集再取补集，最多允许10个标签。
	 * 
	 * @param tagsNot 标签条件，以|逗号隔开，首尾加上|，多个标签先取并集再取补集，最多允许10个标签。
	 * @return 当前对象
	 */
    public Push tagsNot(String tagsNot) {
    	this.tagsNot = tagsNot;
    	return this;
    }

	@Override
	public Boolean getSupportSystem() {
    	return supportSystem;
    }

    /**
	 * 设置是否支持系统消息
	 * 
	 * @param supportSystem 是否支持系统消息
	 * @return 当前对象
	 */
    public Push supportSystem(Boolean supportSystem) {
    	this.supportSystem = supportSystem;
    	return this;
    }

	@Override
	public Boolean getSupportSms() {
    	return supportSms;
    }

    /**
	 * 设置是否支持短信推送
	 * 
	 * @param supportSms 是否支持短信推送
	 * @return 当前对象
	 */
    public Push supportSms(Boolean supportSms) {
    	this.supportSms = supportSms;
    	return this;
    }

	@Override
	public Boolean getSupportEmail() {
    	return supportEmail;
    }

    /**
	 * 设置是否支持邮件推送
	 * 
	 * @param supportEmail 是否支持邮件推送
	 * @return 当前对象
	 */
    public Push supportEmail(Boolean supportEmail) {
    	this.supportEmail = supportEmail;
    	return this;
    }

	@Override
	public Boolean getSupportJpush() {
    	return supportJpush;
    }

    /**
	 * 设置是否支持极光推送
	 * 
	 * @param supportJpush 是否支持极光推送
	 * @return 当前对象
	 */
    public Push supportJpush(Boolean supportJpush) {
    	this.supportJpush = supportJpush;
    	return this;
    }

	@Override
	public Boolean getSupportWechat() {
    	return supportWechat;
    }

    /**
	 * 设置支持微信公众号推送
	 * 
	 * @param supportWechat 支持微信公众号推送
	 * @return 当前对象
	 */
    public Push supportWechat(Boolean supportWechat) {
    	this.supportWechat = supportWechat;
    	return this;
    }

	@Override
	public LocalDateTime getScheduleTime() {
    	return scheduleTime;
    }

    /**
	 * 设置计划推送时间
	 * 
	 * @param scheduleTime 计划推送时间
	 * @return 当前对象
	 */
    public Push scheduleTime(LocalDateTime scheduleTime) {
    	this.scheduleTime = scheduleTime;
    	return this;
    }

	@Override
	public Integer getSucceedNum() {
    	return succeedNum;
    }

    /**
	 * 设置推送成功人数
	 * 
	 * @param succeedNum 推送成功人数
	 * @return 当前对象
	 */
    public Push succeedNum(Integer succeedNum) {
    	this.succeedNum = succeedNum;
    	return this;
    }

	@Override
	public Integer getFailedNum() {
    	return failedNum;
    }

    /**
	 * 设置推送失败人数
	 * 
	 * @param failedNum 推送失败人数
	 * @return 当前对象
	 */
    public Push failedNum(Integer failedNum) {
    	this.failedNum = failedNum;
    	return this;
    }

	@Override
	public PushStatus getStatus() {
    	return status;
    }

    /**
	 * 设置[枚举]状态：0-暂存-TEMP、1-计划中-PLANNING、2-已推送-PUSHED
	 * 
	 * @param status [枚举]状态：0-暂存-TEMP、1-计划中-PLANNING、2-已推送-PUSHED
	 * @return 当前对象
	 */
    public Push status(PushStatus status) {
    	this.status = status;
    	return this;
    }

	@Override
	public String getCreatedBy() {
    	return createdBy;
    }

    /**
	 * 设置创建人ID
	 * 
	 * @param createdBy 创建人ID
	 * @return 当前对象
	 */
    public Push createdBy(String createdBy) {
    	this.createdBy = createdBy;
    	return this;
    }

	@Override
	public LocalDateTime getCreatedTime() {
    	return createdTime;
    }

    /**
	 * 设置创建时间
	 * 
	 * @param createdTime 创建时间
	 * @return 当前对象
	 */
    public Push createdTime(LocalDateTime createdTime) {
    	this.createdTime = createdTime;
    	return this;
    }

	@Override
	public String getModifiedBy() {
    	return modifiedBy;
    }

    /**
	 * 设置更新人ID
	 * 
	 * @param modifiedBy 更新人ID
	 * @return 当前对象
	 */
    public Push modifiedBy(String modifiedBy) {
    	this.modifiedBy = modifiedBy;
    	return this;
    }

	@Override
	public LocalDateTime getModifiedTime() {
    	return modifiedTime;
    }

    /**
	 * 设置更新时间
	 * 
	 * @param modifiedTime 更新时间
	 * @return 当前对象
	 */
    public Push modifiedTime(LocalDateTime modifiedTime) {
    	this.modifiedTime = modifiedTime;
    	return this;
    }

	@Override
	public Boolean getDel() {
    	return del;
    }

    /**
	 * 设置是否删除
	 * 
	 * @param del 是否删除
	 * @return 当前对象
	 */
    public Push del(Boolean del) {
    	this.del = del;
    	return this;
    }

	@Override
	public String getDelBy() {
    	return delBy;
    }

    /**
	 * 设置删除人ID
	 * 
	 * @param delBy 删除人ID
	 * @return 当前对象
	 */
    public Push delBy(String delBy) {
    	this.delBy = delBy;
    	return this;
    }

	@Override
	public LocalDateTime getDelTime() {
    	return delTime;
    }

    /**
	 * 设置删除时间
	 * 
	 * @param delTime 删除时间
	 * @return 当前对象
	 */
    public Push delTime(LocalDateTime delTime) {
    	this.delTime = delTime;
    	return this;
    }

}
